The present invention relates to asset management systems. More particularly, the present invention relates to methods and apparatus for mapping between an asset name and type, and an on-disk file location. Some embodiments provide a centralized configuration, standard code libraries, and a callable executable to allow assets to be located on-disk based on name, type, and search parameters, rather than hard-coded asset path fragments.
Throughout the years, movie makers have often tried to tell stories involving make-believe creatures, far away places, and fantastic things. To do so, they have often relied on animation techniques to bring the make-believe to “life.” Two of the major paths in animation have traditionally included, drawing-based animation techniques and stop motion animation techniques.
Drawing-based animation techniques were refined in the twentieth century, by movie makers such as Walt Disney and used in movies such as “Snow White and the Seven Dwarfs” (1937) and “Fantasia” (1940). This animation technique typically required artists to hand-draw (or paint) animated images onto a transparent media or cels. After painting, each cel would then be captured or recorded onto film as one or more frames in a movie.
Stop motion-based animation techniques typically required the construction of miniature sets, props, and characters. The filmmakers would construct the sets, add props, and position the miniature characters in a pose. After the animator was happy with the arrangements, one or more frames of film would be taken of that specific arrangement. Stop motion animation techniques were developed by movie makers such as Willis O'Brien for movies such as “King Kong” (1933). Subsequently, these techniques were refined by animators such as Ray Harryhausen for movies including “Mighty Joe Young” (1948) and Clash Of The Titans (1981).
With the wide-spread availability of computers in the later part of the twentieth century, animators began to rely upon computers to assist in the animation process. This included using computers to facilitate drawing-based animation, for example, by painting images, by generating in-between images (“tweening”), and the like. This also included using computers to augment stop motion animation techniques. For example, physical models could be represented by virtual models in computer memory, and manipulated.
One of the pioneering companies in the computer-aided animation (CA) industry was Pixar. Pixar is more widely known as Pixar Animation Studios, the creators of animated features such as “Toy Story” (1995) and “Toy Story 2” (1999), “A Bugs Life” (1998), “Monsters, Inc.” (2001), “Finding Nemo” (2003), “The Incredibles” (2004), and others. In addition to creating animated features, Pixar developed computing platforms specially designed for CA, and CA software now known as RenderMan®. RenderMan® was particularly well received in the animation industry and recognized with two Academy Awards®. RenderMan® renders images based upon conceptual “software assets” including geometric scene descriptors including references to object models.
Typically, scenes to be rendered are specified (assembled) by one or more users (e.g. animators, lighters, etc.). These scenes include descriptions of the objects, camera angles, lighting sources, and the like. The scene data file (also known as a scene descriptor file) that describes the entire scene is typically very large, on the order of gigabytes. Because the sizes of typical scene descriptor files are typically large, Pixar developed an internal technique for segmenting a scene descriptor file from one large file into a series of smaller files. As described in the co-pending application described above, Pixar developed and used the concept of “hook set” files and references to “hook files” to describe a scene. Hook files may include geometric object data, shader dada, lighting data, and the like. Accordingly, a typical scene is actually composed of a number of separate data files. Generally, logical assets, such as a scene, a shot (a group of scenes), an object, and the like are now themselves composed of any number of separate assets.
The inventors of the present invention have recognized that when rendering a lengthy animated feature, such as a feature film, hundreds to thousands of assets, e.g. scene descriptor files, hook files, object and the like, need to be retrieved from memory efficiently.
One method considered by the inventors to provide access to assets has been the storage and retrieval of assets from hard-coded directory structures. As an example, a rigid directory structure is first created to store assets, and when a particular asset is required, the appropriate directory in the directory structure is accessed for that asset. In such examples, hard-coded asset paths may use variable substitution, such as “/foo/bar/$name,” where “$name” is the asset name stored in directory “/foo/bar.”
The inventors had determined that drawbacks to these methods includes that the scene descriptor file, or the like must be manually updated when the asset directory structure changes. For example when a reference to “/foo/bar” should be changed to “foo/bar1” due to a version update, files with references to “/foo/bar” must be manually updated to refer to “foo/bar1.”
Another method considered by the inventors to provide access to assets has been with operating system environmental variables path search lists, such as UNIX PATH format. The inventors have determined a number of drawbacks to such methods including that, new variables would have to be established for each new type mapping. Other drawbacks includes that search methods would typically be performed linearly through the list until a name match is made, which would be inefficient. Other drawbacks include that without a type hierarchy, there would be no way to specify more than one level of type refinement in a search without creating a compound type. Still other drawbacks include that environment variables are often managed by the operating system and outside direct control of the users. Further, the operating system would have to be rebooted when the user changes working environments.
Accordingly what is desired are improved method and apparatus for asset management, without the drawbacks described above.